OnReconcileError - divne chovani

Otázka od: little_bobes@centrum.cz

29. 10. 2002 10:42

Zdravim,

ve sve c/s (TRemoteDataModule) aplikaci pouzivam na TClientDataSet, k jehoz
udalosti OnReconcileError jsem napojil formular ReconcileErrorForm prevzaty
ze sablon.

Na mem pocitaci, kde program delam, funguje vse OK. Napr. nastane pri
editaci "key violation", otevre se formular, zvolim Cancel, formular se
zavre a vkladany zaznam se zrusi.
Nyni ten samy program dam na jiny pocitac. Pri editaci nastane ta sama chyba
a spusti se formular. Zvolim Cancel, formular se zavre, ale okamzite se zase
otevre s tou samou hlaskou. A to se neustale opakuje (uz se toho formulare
nezbavim) a pomuze pouze nasilne ukonceni aplikace.

Deje se to na vsech jinych pocitacich, jen ne na mem. Kolega to neustale
svadi na to, ze ja tu mam Delphi, tak mi to funguje, kdezto on je tam nema,
tak mu to nejde.

Mate nekdo podobne zkusenosti?

Diky Bob

D4 c/s, IB6


Odpovedá: hlas

29. 10. 2002 11:26

a funguje ti onreconcile error aj ked 2 uzivatelia zapisuju do
toho isteho zaznamu? dokaze druhy prepisat prveho?


----- Original Message -----
From: <little_bobes@centrum.cz>
To: <delphi-l@clexpert.cz>
Sent: Tuesday, October 29, 2002 9:55 AM
Subject: OnReconcileError - divne chovani


> Zdravim,
>
> ve sve c/s (TRemoteDataModule) aplikaci pouzivam na TClientDataSet, k
jehoz
> udalosti OnReconcileError jsem napojil formular ReconcileErrorForm
prevzaty
> ze sablon.
>
> Na mem pocitaci, kde program delam, funguje vse OK. Napr. nastane pri
> editaci "key violation", otevre se formular, zvolim Cancel, formular se
> zavre a vkladany zaznam se zrusi.
> Nyni ten samy program dam na jiny pocitac. Pri editaci nastane ta sama
chyba
> a spusti se formular. Zvolim Cancel, formular se zavre, ale okamzite se
zase
> otevre s tou samou hlaskou. A to se neustale opakuje (uz se toho formulare
> nezbavim) a pomuze pouze nasilne ukonceni aplikace.
>
> Deje se to na vsech jinych pocitacich, jen ne na mem. Kolega to neustale
> svadi na to, ze ja tu mam Delphi, tak mi to funguje, kdezto on je tam
nema,
> tak mu to nejde.
>
> Mate nekdo podobne zkusenosti?
>
> Diky Bob
>
> D4 c/s, IB6
>
>
>
>
>

Odpovedá: Jan Sebelík

29. 10. 2002 15:15

> ve sve c/s (TRemoteDataModule) aplikaci pouzivam na TClientDataSet, k jehoz
> udalosti OnReconcileError jsem napojil formular ReconcileErrorForm prevzaty
> ze sablon.
>
> Na mem pocitaci, kde program delam, funguje vse OK. Napr. nastane pri
> editaci "key violation", otevre se formular, zvolim Cancel, formular se
> zavre a vkladany zaznam se zrusi.

To je nejaky divny.
OnReconcileError se vola az pri ApplyUpdates.
Pri proste editaci se nevyvola, "key violation" hlasi primo ClientDataSet.
OnReconcileError nastane pri ApplyUpdates na kazdem chybnem zaznamu.

> Nyni ten samy program dam na jiny pocitac. Pri editaci nastane ta sama chyba
> a spusti se formular. Zvolim Cancel, formular se zavre, ale okamzite se zase
> otevre s tou samou hlaskou. A to se neustale opakuje (uz se toho formulare
> nezbavim) a pomuze pouze nasilne ukonceni aplikace.

To vypada tak, ze ApplyUpdates se vola nejak "automaticky", ci dokonce
"rekurzivne"?

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347735)
=========================================

Odpovedá: little_bobes@centrum.cz

29. 10. 2002 13:57

> To je nejaky divny.
> OnReconcileError se vola az pri ApplyUpdates.
> Pri proste editaci se nevyvola, "key violation" hlasi primo ClientDataSet.
> OnReconcileError nastane pri ApplyUpdates na kazdem chybnem zaznamu.

Ano, mas pravdu. Samozrejme to nastane az pri ApplyUpdates (pri zapisu na
server).
V udalosti AfterPost mam volani:
  If CDS.ApplyUpdates(0) = 0 Then CDS.Refresh;

>
> To vypada tak, ze ApplyUpdates se vola nejak "automaticky", ci dokonce
"rekurzivne"?
>

To me taky napadlo, ale nedokazu zjistit proc, protoze ona obsluha udalosti
vypada nasledovne:

procedure TForm.CDSReconcileError(
  DataSet: TClientDataSet; E: EReconcileError; UpdateKind: TUpdateKind;
  var Action: TReconcileAction);
begin
  Action := HandleReconcileError(DataSet, UpdateKind, E);
end;


Bob